September 14, 2017

Goal of this talk

  • Convince you to invest in large scale lab based performance analysis.
  • Dig into some data.

Overall Distribution

Overall Distribution (Sampled)

Objective of this analysis.

  • Find Chrome and Website bugs based on new insight.
  • Understand Page Load performance at scale.
  • Identify weaknesses in our metrics.

Gathering Data

  • Load the Alexa top 10k on Nexus 5's.
  • Simulate 3G network.
  • Both warm & cold Page loads.
  • Reasonably detailed main thread attribution.

Time To Consistently Interactive

Time To Consistently Interactive

Quantiles

Time To Consistently Interactive

Normalized by quantiles

Important Timestamp Deltas

Per Second Contributors

Next Steps: Elimate Other

Slice Title: Total self time in ms across top 10k pages
TaskQueueManager::RunTask : 45799357.7984
LocalFrameView::prePaint : 22831219.588
ProxyMain::BeginMainFrame::commit : 16157595.614
TaskQueueManager::ProcessTaskFromWorkQueue : 16034099.1022
V8.NewContext : 15784434.0443

Next Steps: Elimate Other

  • We need some better ways to keep trace event renaming from breaking metrics.
  • Contribute by adding your slices to the user friendly category driver.

    const TITLES_FOR_USER_FRIENDLY_CATEGORY = {
    composite: [
      'CompositingInputsUpdater::update',
      'ThreadProxy::SetNeedsUpdateLayers',
      'LayerTreeHost::UpdateLayers::CalcDrawProps',
      'UpdateLayerTree'
    ]
    }

Next Steps: Improved Breakdowns

  • blocked_on_network should split out by type of resource.
  • Can script_execute be split out via runtimeCallStats?
  • Filter out 404s - maybe pick a better pageset?
  • ???

Next Steps: Crazy Ideas

  • Label sites by framework.
  • Gather memory data as well.
  • Do the same thing, but for input.